Click here to download the Blitz Browser!

WPT

wpt / url / url-setters.any.html?exclude=(file|javascript|mailto)

Spec: URL ↗

Runs: Chrome 155.0.8043.0 (wpt@d6328700c, 2026-09-05) | Firefox 157.0a1 (wpt@9b965429d, 2026-09-05) | Safari 251 preview (wpt@c29bd2aee, 2026-09-05) | Ladybird 1.0-4912a (wpt@9b965429d, 2026-09-05) | Servo Servo 0.6 (wpt@2c385f65e, 2026-09-04) | Blitz a50cb8971 (wpt@a95401e4e, 2026-09-03)

View on the Blitz WPT dashboard | Open test on wpt.live | wpt.fyi

ChromeFirefoxSafariLadybirdServoBlitz
Total224/246226/246246/246246/246227/246NOT RUN
SubtestChromeFirefoxSafariLadybirdServoBlitz
Loading data…PASSPASSPASSPASSPASS
URL: Setting <a://example.net>.protocol = '' The empty string is not a valid scheme. Setter leaves the URL unchanged.PASSPASSPASSPASSPASS
URL: Setting <a://example.net>.protocol = 'b'PASSPASSPASSPASSPASS
URL: Setting <a://example.net>.protocol = 'B' Upper-case ASCII is lower-casedPASSPASSPASSPASSPASS
URL: Setting <a://example.net>.protocol = 'é' Non-ASCII is rejectedPASSPASSPASSPASSPASS
URL: Setting <a://example.net>.protocol = '0b' No leading digitPASSPASSPASSPASSPASS
URL: Setting <a://example.net>.protocol = '+b' No leading punctuationPASSPASSPASSPASSPASS
URL: Setting <a://example.net>.protocol = 'bC0+-.'PASSPASSPASSPASSPASS
URL: Setting <a://example.net>.protocol = 'b,c' Only some punctuation is acceptablePASSPASSPASSPASSPASS
URL: Setting <a://example.net>.protocol = 'bé' Non-ASCII is rejectedPASSPASSPASSPASSPASS
URL: Setting <http://test@example.net>.protocol = 'file' Can’t switch from URL containing username/password/port to filePASSPASSPASSPASSPASS
URL: Setting <https://example.net:1234>.protocol = 'file'PASSPASSPASSPASSPASS
URL: Setting <wss://x:x@example.net:1234>.protocol = 'file'PASSPASSPASSPASSPASS
URL: Setting <http://example.net>.protocol = 'b' Can’t switch from special scheme to non-specialPASSPASSPASSPASSPASS
URL: Setting <https://example.net>.protocol = 's'PASSPASSPASSPASSPASS
URL: Setting <ftp://example.net>.protocol = 'test'PASSPASSPASSPASSPASS
URL: Setting <ssh://me@example.net>.protocol = 'http' Can’t switch from non-special scheme to specialFAILPASSPASSPASSPASS
URL: Setting <ssh://me@example.net>.protocol = 'https'FAILPASSPASSPASSPASS
URL: Setting <ssh://me@example.net>.protocol = 'file'FAILPASSPASSPASSPASS
URL: Setting <ssh://example.net>.protocol = 'file'FAILPASSPASSPASSPASS
URL: Setting <nonsense:///test>.protocol = 'https'FAILPASSPASSPASSPASS
URL: Setting <http://example.net>.protocol = 'https:foo : bar' Stuff after the first ':' is ignoredPASSPASSPASSPASSPASS
URL: Setting <data:text/html,<p>Test>.protocol = 'view-source+data:foo : bar' Stuff after the first ':' is ignoredPASSPASSPASSPASSPASS
URL: Setting <http://foo.com:443/>.protocol = 'https' Port is set to null if it is the default for new scheme.PASSPASSPASSPASSPASS
URL: Setting <http://test/>.protocol = 'h tt ps' Tab and newline are strippedFAILPASSPASSPASSPASS
URL: Setting <http://test/>.protocol = 'https 'FAILPASSPASSPASSPASS
URL: Setting <http://test/>.protocol = 'https' Non-tab/newline C0 controls result in no-opPASSPASSPASSPASSPASS
URL: Setting <http://test/>.protocol = 'https 'PASSPASSPASSPASSPASS
URL: Setting <http://test/>.protocol = 'https'PASSPASSPASSPASSPASS
URL: Setting <http://test/>.protocol = 'https 'PASSPASSPASSPASSPASS
URL: Setting <unix:/run/foo.socket>.username = 'me' No host means no usernamePASSPASSPASSPASSPASS
URL: Setting <http://example.net>.username = 'me'PASSPASSPASSPASSPASS
URL: Setting <http://:secret@example.net>.username = 'me'PASSPASSPASSPASSPASS
URL: Setting <http://me@example.net>.username = ''PASSPASSPASSPASSPASS
URL: Setting <http://me:secret@example.net>.username = ''PASSPASSPASSPASSPASS
URL: Setting <http://example.net>.username = '  !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the userinfo encode set.FAILPASSPASSPASSPASS
URL: Setting <http://example.net>.username = '%c3%89té' Bytes already percent-encoded are left as-is.PASSPASSPASSPASSPASS
URL: Setting <sc:///>.username = 'x'PASSPASSPASSPASSPASS
URL: Setting <unix:/run/foo.socket>.password = 'secret' No host means no passwordPASSPASSPASSPASSPASS
URL: Setting <http://example.net>.password = 'secret'PASSPASSPASSPASSPASS
URL: Setting <http://me@example.net>.password = 'secret'PASSPASSPASSPASSPASS
URL: Setting <http://:secret@example.net>.password = ''PASSPASSPASSPASSPASS
URL: Setting <http://me:secret@example.net>.password = ''PASSPASSPASSPASSPASS
URL: Setting <http://example.net>.password = '  !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the userinfo encode set.FAILPASSPASSPASSPASS
URL: Setting <http://example.net>.password = '%c3%89té' Bytes already percent-encoded are left as-is.PASSPASSPASSPASSPASS
URL: Setting <sc:///>.password = 'x'PASSPASSPASSPASSPASS
URL: Setting <sc://x/>.host = '' Non-special schemePASSPASSPASSPASSPASS
URL: Setting <sc://x/>.host = ' 'PASSPASSPASSPASSPASS
URL: Setting <sc://x/>.host = ' 'PASSPASSPASSPASSPASS
URL: Setting <sc://x/>.host = ' 'PASSPASSPASSPASSPASS
URL: Setting <sc://x/>.host = ' 'PASSPASSPASSPASSPASS
URL: Setting <sc://x/>.host = '#'PASSPASSPASSPASSPASS
URL: Setting <sc://x/>.host = '/'PASSPASSPASSPASSPASS
URL: Setting <sc://x/>.host = '?'PASSPASSPASSPASSPASS
URL: Setting <sc://x/>.host = '@'PASSPASSPASSPASSPASS
URL: Setting <sc://x/>.host = 'ß'PASSPASSPASSPASSPASS
URL: Setting <https://x/>.host = 'ß' IDNA Nontransitional_ProcessingPASSPASSPASSPASSPASS
URL: Setting <data:text/plain,Stuff>.host = 'example.net' Cannot-be-a-base means no hostPASSPASSPASSPASSPASS
URL: Setting <http://example.net>.host = 'example.com:8080'PASSPASSPASSPASSPASS
URL: Setting <http://example.net:8080>.host = 'example.com' Port number is unchanged if not specified in the new valuePASSPASSPASSPASSPASS
URL: Setting <http://example.net:8080>.host = 'example.com:' Port number is unchanged if not specifiedPASSPASSPASSPASSPASS
URL: Setting <http://example.net>.host = '' The empty host is not valid for special schemesPASSPASSPASSPASSPASS
URL: Setting <view-source+http://example.net/foo>.host = '' The empty host is OK for non-special schemesPASSPASSPASSPASSPASS
URL: Setting <a:/foo>.host = 'example.net' Path-only URLs can gain a hostPASSPASSPASSPASSPASS
URL: Setting <http://example.net>.host = '0x7F000001:8080' IPv4 address syntax is normalizedPASSPASSPASSPASSPASS
URL: Setting <http://example.net>.host = '[::0:01]:2' IPv6 address syntax is normalizedPASSPASSPASSPASSPASS
URL: Setting <http://example.net>.host = '[2001:db8::2]:4002' IPv6 literal address with port, crbug.com/1012416PASSPASSPASSPASSPASS
URL: Setting <http://example.net>.host = 'example.com:80' Default port number is removedPASSPASSPASSPASSPASS
URL: Setting <https://example.net>.host = 'example.com:443' Default port number is removedPASSPASSPASSPASSPASS
URL: Setting <https://example.net>.host = 'example.com:80' Default port number is only removed for the relevant schemePASSPASSPASSPASSPASS
URL: Setting <http://example.net:8080>.host = 'example.com:80' Port number is removed if new port is scheme default and existing URL has a non-default portPASSPASSPASSPASSPASS
URL: Setting <http://example.net/path>.host = 'example.com/stuff' Stuff after a / delimiter is ignoredPASSPASSPASSPASSPASS
URL: Setting <http://example.net/path>.host = 'example.com:8080/stuff' Stuff after a / delimiter is ignoredPASSPASSPASSPASSPASS
URL: Setting <http://example.net/path>.host = 'example.com?stuff' Stuff after a ? delimiter is ignoredPASSPASSPASSPASSPASS
URL: Setting <http://example.net/path>.host = 'example.com?stuff:8080' Stuff after a ? delimiter is ignored, trailing 'port'PASSPASSPASSPASSPASS
URL: Setting <http://example.net/path>.host = 'example.com:8080?stuff' Stuff after a ? delimiter is ignoredPASSPASSPASSPASSPASS
URL: Setting <http://example.net/path>.host = 'example.com#stuff' Stuff after a # delimiter is ignoredPASSPASSPASSPASSPASS
URL: Setting <http://example.net/path>.host = 'example.com:8080#stuff' Stuff after a # delimiter is ignoredPASSPASSPASSPASSPASS
URL: Setting <http://example.net/path>.host = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemesPASSPASSPASSPASSPASS
URL: Setting <http://example.net/path>.host = 'example.com:8080\stuff' Stuff after a \ delimiter is ignored for special schemesPASSPASSPASSPASSPASS
URL: Setting <view-source+http://example.net/path>.host = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hostsPASSPASSPASSPASSPASS
URL: Setting <view-source+http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an errorPASSPASSPASSPASSPASS
URL: Setting <http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an errorPASSPASSPASSPASSPASS
URL: Setting <http://example.net/path>.host = 'example.com:8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an errorPASSPASSPASSPASSPASS
URL: Setting <http://example.net:8080>.host = 'example.com:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an errorPASSPASSPASSPASSPASS
URL: Setting <http://example.net:8080/test>.host = '[::1]:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an errorPASSPASSPASSPASSPASS
URL: Setting <http://example.net:8080/test>.host = '[::1]' IPv6 without portPASSPASSPASSPASSPASS
URL: Setting <http://example.net/path>.host = 'example.com:65535' Port numbers are 16 bit integersPASSPASSPASSPASSPASS
URL: Setting <http://example.net/path>.host = 'example.com:65536' Port numbers are 16 bit integers, overflowing is an error. Hostname is still set, though.PASSPASSPASSPASSPASS
URL: Setting <http://example.net/>.host = '[google.com]' Broken IPv6PASSPASSPASSPASSPASS
URL: Setting <http://example.net/>.host = '[::1.2.3.4x]'PASSPASSPASSPASSPASS
URL: Setting <http://example.net/>.host = '[::1.2.3.]'PASSPASSPASSPASSPASS
URL: Setting <http://example.net/>.host = '[::1.2.]'PASSPASSPASSPASSPASS
URL: Setting <http://example.net/>.host = '[::1.]'PASSPASSPASSPASSPASS
URL: Setting <sc://test@test/>.host = ''PASSPASSPASSPASSPASS
URL: Setting <sc://test:12/>.host = ''PASSPASSPASSPASSPASS
URL: Setting <http://example.com/>.host = '///bad.com' Leading / is not strippedPASSPASSPASSPASSPASS
URL: Setting <sc://example.com/>.host = '///bad.com' Leading / is not strippedPASSPASSPASSPASSPASS
URL: Setting <https://example.com/>.host = 'a%C2%ADb'PASSPASSPASSPASSPASS
URL: Setting <https://example.com/>.host = '­'PASSPASSPASSPASSPASS
URL: Setting <https://example.com/>.host = '%C2%AD'PASSPASSPASSPASSPASS
URL: Setting <https://example.com/>.host = 'xn--'PASSFAILPASSPASSFAIL
URL: Setting <https://test.invalid/>.host = '*'FAILPASSPASSPASSPASS
URL: Setting <https://test.invalid/>.host = 'x@x'PASSPASSPASSPASSPASS
URL: Setting <https://test.invalid/>.host = 'foo bar'PASSPASSPASSPASSPASS
URL: Setting <https://test.invalid/>.host = '><'PASSPASSPASSPASSPASS
URL: Setting <https://test.invalid/>.host = 'test/@aaa'PASSPASSPASSPASSPASS
URL: Setting <https://test.invalid/>.host = 'test/:aaa'PASSPASSPASSPASSPASS
URL: Setting <foo://path/to>.host = ':80'PASSPASSPASSPASSPASS
URL: Setting <sc://x/>.hostname = '' Non-special schemePASSPASSPASSPASSPASS
URL: Setting <sc://x/>.hostname = ' 'PASSPASSPASSPASSPASS
URL: Setting <sc://x/>.hostname = ' 'PASSPASSPASSPASSPASS
URL: Setting <sc://x/>.hostname = ' 'PASSPASSPASSPASSPASS
URL: Setting <sc://x/>.hostname = ' 'PASSPASSPASSPASSPASS
URL: Setting <sc://x/>.hostname = '#'PASSPASSPASSPASSPASS
URL: Setting <sc://x/>.hostname = '/'PASSPASSPASSPASSPASS
URL: Setting <sc://x/>.hostname = '?'PASSPASSPASSPASSPASS
URL: Setting <sc://x/>.hostname = '@'PASSPASSPASSPASSPASS
URL: Setting <data:text/plain,Stuff>.hostname = 'example.net' Cannot-be-a-base means no hostPASSPASSPASSPASSPASS
URL: Setting <http://example.net:8080>.hostname = 'example.com'PASSPASSPASSPASSPASS
URL: Setting <http://example.net>.hostname = '' The empty host is not valid for special schemesPASSPASSPASSPASSPASS
URL: Setting <view-source+http://example.net/foo>.hostname = '' The empty host is OK for non-special schemesPASSPASSPASSPASSPASS
URL: Setting <a:/foo>.hostname = 'example.net' Path-only URLs can gain a hostPASSPASSPASSPASSPASS
URL: Setting <http://example.net:8080>.hostname = '0x7F000001' IPv4 address syntax is normalizedPASSPASSPASSPASSPASS
URL: Setting <http://example.net>.hostname = '[::0:01]' IPv6 address syntax is normalizedPASSPASSPASSPASSPASS
URL: Setting <http://example.net/path>.hostname = 'example.com:8080' : delimiter invalidates entire valuePASSPASSPASSPASSPASS
URL: Setting <http://example.net:8080/path>.hostname = 'example.com:' : delimiter invalidates entire valuePASSPASSPASSPASSPASS
URL: Setting <http://example.net/path>.hostname = 'example.com/stuff' Stuff after a / delimiter is ignoredPASSPASSPASSPASSPASS
URL: Setting <http://example.net/path>.hostname = 'example.com?stuff' Stuff after a ? delimiter is ignoredPASSPASSPASSPASSPASS
URL: Setting <http://example.net/path>.hostname = 'example.com#stuff' Stuff after a # delimiter is ignoredPASSPASSPASSPASSPASS
URL: Setting <http://example.net/path>.hostname = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemesPASSPASSPASSPASSPASS
URL: Setting <view-source+http://example.net/path>.hostname = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hostsPASSPASSPASSPASSPASS
URL: Setting <http://example.net/>.hostname = '[google.com]' Broken IPv6PASSPASSPASSPASSPASS
URL: Setting <http://example.net/>.hostname = '[::1.2.3.4x]'PASSPASSPASSPASSPASS
URL: Setting <http://example.net/>.hostname = '[::1.2.3.]'PASSPASSPASSPASSPASS
URL: Setting <http://example.net/>.hostname = '[::1.2.]'PASSPASSPASSPASSPASS
URL: Setting <http://example.net/>.hostname = '[::1.]'PASSPASSPASSPASSPASS
URL: Setting <sc://test@test/>.hostname = ''PASSPASSPASSPASSPASS
URL: Setting <sc://test:12/>.hostname = ''PASSPASSPASSPASSPASS
URL: Setting <non-spec:/.//p>.hostname = 'h' Drop /. from pathPASSFAILPASSPASSFAIL
URL: Setting <non-spec:/.//p>.hostname = ''PASSFAILPASSPASSFAIL
URL: Setting <http://example.com/>.hostname = '///bad.com' Leading / is not strippedPASSPASSPASSPASSPASS
URL: Setting <sc://example.com/>.hostname = '///bad.com' Leading / is not strippedPASSPASSPASSPASSPASS
URL: Setting <https://example.com/>.hostname = 'a%C2%ADb'PASSPASSPASSPASSPASS
URL: Setting <https://example.com/>.hostname = '­'PASSPASSPASSPASSPASS
URL: Setting <https://example.com/>.hostname = '%C2%AD'PASSPASSPASSPASSPASS
URL: Setting <https://example.com/>.hostname = 'xn--'PASSFAILPASSPASSFAIL
URL: Setting <https://test.invalid/>.hostname = '*'FAILPASSPASSPASSPASS
URL: Setting <https://test.invalid/>.hostname = 'x@x'PASSPASSPASSPASSPASS
URL: Setting <https://test.invalid/>.hostname = 'foo bar'PASSPASSPASSPASSPASS
URL: Setting <https://test.invalid/>.hostname = '><'PASSPASSPASSPASSPASS
URL: Setting <https://test.invalid/>.hostname = 'test/@aaa'PASSPASSPASSPASSPASS
URL: Setting <https://test.invalid/>.hostname = 'test/:aaa'PASSPASSPASSPASSPASS
URL: Setting <http://example.net>.port = '8080'PASSPASSPASSPASSPASS
URL: Setting <http://example.net:8080>.port = '' Port number is removed if empty is the new valuePASSPASSPASSPASSPASS
URL: Setting <http://example.net:8080>.port = '80' Default port number is removedPASSPASSPASSPASSPASS
URL: Setting <https://example.net:4433>.port = '443' Default port number is removedPASSPASSPASSPASSPASS
URL: Setting <https://example.net>.port = '80' Default port number is only removed for the relevant schemePASSPASSPASSPASSPASS
URL: Setting <http://example.net/path>.port = '8080/stuff' Stuff after a / delimiter is ignoredPASSPASSPASSPASSPASS
URL: Setting <http://example.net/path>.port = '8080?stuff' Stuff after a ? delimiter is ignoredPASSPASSPASSPASSPASS
URL: Setting <http://example.net/path>.port = '8080#stuff' Stuff after a # delimiter is ignoredPASSPASSPASSPASSPASS
URL: Setting <http://example.net/path>.port = '8080\stuff' Stuff after a \ delimiter is ignored for special schemesPASSPASSPASSPASSPASS
URL: Setting <view-source+http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an errorPASSPASSPASSPASSPASS
URL: Setting <http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an errorPASSPASSPASSPASSPASS
URL: Setting <http://example.net/path>.port = '8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an errorPASSPASSPASSPASSPASS
URL: Setting <http://example.net/path>.port = '65535' Port numbers are 16 bit integersPASSPASSPASSPASSPASS
URL: Setting <http://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an errorPASSPASSPASSPASSPASS
URL: Setting <http://example.net:8080/path>.port = 'randomstring' Setting port to a string that doesn't parse as a numberPASSPASSPASSPASSPASS
URL: Setting <non-special://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an errorPASSPASSPASSPASSPASS
URL: Setting <non-base:value>.port = '12'PASSPASSPASSPASSPASS
URL: Setting <sc:///>.port = '12'PASSPASSPASSPASSPASS
URL: Setting <sc://x/>.port = '12'PASSPASSPASSPASSPASS
URL: Setting <https://domain.com:443>.port = ' 8080' Leading u0009 on special schemePASSPASSPASSPASSPASS
URL: Setting <wpt++://domain.com:443>.port = ' 8080' Leading u0009 on non-special schemePASSPASSPASSPASSPASS
URL: Setting <https://www.google.com:4343>.port = '4wpt' Should use all ascii prefixed characters as portPASSPASSPASSPASSPASS
URL: Setting <https://domain.com:3000>.port = ' 80 80 'PASSPASSPASSPASSPASS
URL: Setting <https://domain.com:3000>.port = ' 'PASSFAILPASSPASSFAIL
URL: Setting <data:original>.pathname = 'new value'PASSPASSPASSPASSPASS
URL: Setting <sc:original>.pathname = 'new value'PASSPASSPASSPASSPASS
URL: Setting <foo://somehost/some/path>.pathname = '' Non-special URLs can have their paths erasedPASSPASSPASSPASSPASS
URL: Setting <foo:///some/path>.pathname = '' Non-special URLs with an empty host can have their paths erasedPASSFAILPASSPASSFAIL
URL: Setting <foo:/some/path>.pathname = '' Path-only URLs cannot have their paths erasedPASSPASSPASSPASSPASS
URL: Setting <foo:/some/path>.pathname = 'test' Path-only URLs always have an initial slashPASSPASSPASSPASSPASS
URL: Setting <unix:/run/foo.socket?timeout=10>.pathname = '/var/log/../run/bar.socket'PASSPASSPASSPASSPASS
URL: Setting <https://example.net#nav>.pathname = 'home'PASSPASSPASSPASSPASS
URL: Setting <https://example.net#nav>.pathname = '../home'PASSPASSPASSPASSPASS
URL: Setting <http://example.net/home?lang=fr#nav>.pathname = '\a\%2E\b\%2e.\c' \ is a segment delimiter for 'special' URLsPASSPASSPASSPASSPASS
URL: Setting <view-source+http://example.net/home?lang=fr#nav>.pathname = '\a\%2E\b\%2e.\c' \ is *not* a segment delimiter for non-'special' URLsPASSPASSPASSPASSPASS
URL: Setting <a:/>.pathname = '  !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the default encode set. Tabs and newlines are removed.FAILFAILPASSPASSFAIL
URL: Setting <http://example.net>.pathname = '%2e%2E%c3%89té' Bytes already percent-encoded are left as-is, including %2E outside dotted segments.PASSPASSPASSPASSPASS
URL: Setting <http://example.net>.pathname = '?' ? needs to be encodedPASSPASSPASSPASSPASS
URL: Setting <http://example.net>.pathname = '#' # needs to be encodedPASSPASSPASSPASSPASS
URL: Setting <sc://example.net>.pathname = '?' ? needs to be encoded, non-special schemePASSPASSPASSPASSPASS
URL: Setting <sc://example.net>.pathname = '#' # needs to be encoded, non-special schemePASSPASSPASSPASSPASS
URL: Setting <http://example.net>.pathname = '/?é' ? doesn't mess up encodingPASSPASSPASSPASSPASS
URL: Setting <http://example.net>.pathname = '/#é' # doesn't mess up encodingPASSPASSPASSPASSPASS
URL: Setting <non-spec:/>.pathname = '/.//p' Serialize /. in pathPASSFAILPASSPASSFAIL
URL: Setting <non-spec:/>.pathname = '/..//p'PASSFAILPASSPASSFAIL
URL: Setting <non-spec:/>.pathname = '//p'PASSFAILPASSPASSFAIL
URL: Setting <non-spec:/.//>.pathname = 'p' Drop /. from pathPASSFAILPASSPASSFAIL
URL: Setting <data:/nospace>.pathname = 'space ' Non-special URLs with non-opaque paths percent-encode U+0020PASSFAILPASSPASSPASS
URL: Setting <sc:/nospace>.pathname = 'space 'PASSPASSPASSPASSPASS
URL: Setting <http://example.net>.pathname = ' ' Trailing space should be encodedPASSPASSPASSPASSPASS
URL: Setting <http://example.net>.pathname = '' Trailing C0 control should be encodedPASSPASSPASSPASSPASS
URL: Setting <foo://path/to>.pathname = '/..'PASSPASSPASSPASSPASS
URL: Setting <https://example.net#nav>.search = 'lang=fr'PASSPASSPASSPASSPASS
URL: Setting <https://example.net?lang=en-US#nav>.search = 'lang=fr'PASSPASSPASSPASSPASS
URL: Setting <https://example.net?lang=en-US#nav>.search = '?lang=fr'PASSPASSPASSPASSPASS
URL: Setting <https://example.net?lang=en-US#nav>.search = '??lang=fr'PASSPASSPASSPASSPASS
URL: Setting <https://example.net?lang=en-US#nav>.search = '?'FAILPASSPASSPASSPASS
URL: Setting <https://example.net?lang=en-US#nav>.search = ''PASSPASSPASSPASSPASS
URL: Setting <https://example.net?lang=en-US>.search = ''PASSPASSPASSPASSPASS
URL: Setting <https://example.net>.search = ''PASSPASSPASSPASSPASS
URL: Setting <a:/>.search = '  !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the query encode set. Tabs and newlines are removed.FAILPASSPASSPASSPASS
URL: Setting <http://example.net>.search = '%c3%89té' Bytes already percent-encoded are left as-isPASSPASSPASSPASSPASS
URL: Setting <data:space ?query>.search = '' Trailing spaces and opaque pathsFAILFAILPASSPASSFAIL
URL: Setting <sc:space ?query>.search = ''FAILFAILPASSPASSFAIL
URL: Setting <data:space ?query#fragment>.search = '' Trailing spaces and opaque pathsFAILFAILPASSPASSFAIL
URL: Setting <sc:space ?query#fragment>.search = ''FAILFAILPASSPASSFAIL
URL: Setting <http://example.net>.search = ' ' Trailing space should be encodedPASSPASSPASSPASSPASS
URL: Setting <http://example.net>.search = '' Trailing C0 control should be encodedPASSPASSPASSPASSPASS
URL: Setting <https://example.net>.hash = 'main'PASSPASSPASSPASSPASS
URL: Setting <https://example.net#nav>.hash = 'main'PASSPASSPASSPASSPASS
URL: Setting <https://example.net?lang=en-US>.hash = '##nav'PASSPASSPASSPASSPASS
URL: Setting <https://example.net?lang=en-US#nav>.hash = '#main'PASSPASSPASSPASSPASS
URL: Setting <https://example.net?lang=en-US#nav>.hash = '#'PASSPASSPASSPASSPASS
URL: Setting <https://example.net?lang=en-US#nav>.hash = ''PASSPASSPASSPASSPASS
URL: Setting <http://example.net>.hash = '#foo bar'PASSPASSPASSPASSPASS
URL: Setting <http://example.net>.hash = '#foo"bar'PASSPASSPASSPASSPASS
URL: Setting <http://example.net>.hash = '#foo<bar'PASSPASSPASSPASSPASS
URL: Setting <http://example.net>.hash = '#foo>bar'PASSPASSPASSPASSPASS
URL: Setting <http://example.net>.hash = '#foo`bar'PASSPASSPASSPASSPASS
URL: Setting <a:/>.hash = '  !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' Simple percent-encoding; tabs and newlines are removedPASSPASSPASSPASSPASS
URL: Setting <http://example.net>.hash = 'ab' Percent-encode NULLs in fragmentPASSPASSPASSPASSPASS
URL: Setting <non-spec:/>.hash = 'ab' Percent-encode NULLs in fragmentPASSPASSPASSPASSPASS
URL: Setting <http://example.net>.hash = '%c3%89té' Bytes already percent-encoded are left as-isPASSPASSPASSPASSPASS
URL: Setting <data:space #fragment>.hash = '' Trailing spaces and opaque pathsFAILFAILPASSPASSFAIL
URL: Setting <sc:space #fragment>.hash = ''FAILFAILPASSPASSFAIL
URL: Setting <data:space ?query#fragment>.hash = '' Trailing spaces and opaque pathsFAILFAILPASSPASSFAIL
URL: Setting <sc:space ?query#fragment>.hash = ''FAILFAILPASSPASSFAIL
URL: Setting <http://example.net>.hash = ' ' Trailing space should be encodedPASSPASSPASSPASSPASS
URL: Setting <http://example.net>.hash = '' Trailing C0 control should be encodedPASSPASSPASSPASSPASS
URL: Setting <data:text/plain,test>.hash = '#<foo> <bar>' Fragment with <> on data: URIPASSPASSPASSPASSPASS
URL: Setting <about:blank>.hash = '#<foo> <bar>' Fragment with <> on about:blankPASSPASSPASSPASSPASS
URL: Setting <data:text/plain,test>.hash = '#  !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' Fragment percent-encode set on data: URI; tabs and newlines are removedPASSPASSPASSPASSPASS
URL: Setting <about:blank>.hash = '#  !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' Fragment percent-encode set on about:blank; tabs and newlines are removedPASSPASSPASSPASSPASS